/*  ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** 
*   Copyright 2014 Jan-Marwin Wollschläger                                   *
*                                                                            *
*   Licensed under the Apache License, Version 2.0 (the "License");          *
*   you may not use this file except in compliance with the License.         *
*   You may obtain a copy of the License at                                  *
*                                                                            *
*       http://www.apache.org/licenses/LICENSE-2.0                           *
*                                                                            *
*   Unless required by applicable law or agreed to in writing, software      *
*   distributed under the License is distributed on an "AS IS" BASIS,        *
*   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
*   See the License for the specific language governing permissions and      *
*   limitations under the License.                                           *
** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** **   */ 
import processing.core.*;

public interface IController
{
   /**
   * @param model The new model for this IController instance.
   **/
   public void setModel(IModel model);
  
   /**
   * @param view The new view for this IController instance.
   **/
   public void setView(IView view); 
   
   /**
   * @param parent The PApplet that should be controlled by this instance, e.g.
   * this controller "listens" for user events on this instance and applies 
   * needed changes to the model.
   **/
   public void control(PApplet parent);
   
   
   /**
   * Handle mouse clicks that were redirected to this instance
   **/
   public void mouseClicked();
   
   
   /**
   * Handle pressed keys that were redirected to this instance
   **/
   public void keyPressed();
   
}
